package com.wu.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wu.pojo.Users;
import com.wu.pojo.model.UserToken;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: 吴磊
 * @program: blog
 * @create: 2021-04-19 20:10
 */
@Mapper
public interface UsersMapper extends BaseMapper<Users> {
    /**
     * 用户登录的时候用
     *
     * @param userTelephoneNumber
     * @param userPassword
     * @return
     */
    Users getUserByTelAndPwd(@Param("userTelephoneNumber") String userTelephoneNumber,
                             @Param("userPassword") String userPassword);


    /**
     * 通过手机获取用户
     *
     * @param telPhone
     * @return
     */
    Users getUserByTelPhone(@Param("telPhone") String telPhone);

    /**
     * 插入用户
     *
     * @param userId
     * @param userPassword
     * @param userRegistrationTime
     * @param userTelephoneNumber
     * @return
     */
    int insertUser(@Param("userId") String userId,
                   @Param("userPassword") String userPassword,
                   @Param("userRegistrationTime") String userRegistrationTime,
                   @Param("userTelephoneNumber") String userTelephoneNumber);

    /**
     * 更改用户信息
     *
     * @param userId
     * @param userName
     * @param userPassword
     * @param userEmail
     * @param userProfilePhoto
     * @param userTelephoneNumber
     * @param userNickname
     * @param userSex
     * @return
     */
    int updateUserInfo(
            @Param("userId") String userId,
            @Param("userName") String userName,
            @Param("userPassword") String userPassword,
            @Param("userEmail") String userEmail,
            @Param("userProfilePhoto") String userProfilePhoto,
            @Param("userTelephoneNumber") String userTelephoneNumber,
            @Param("userNickname") String userNickname,
            @Param("userSex") String userSex,
            @Param("userIntroduce") String userIntroduce

    );

    /**
     * 通过Id获取用户密码
     *
     * @param userId
     * @return
     */
    String getUserPasswordById(@Param("userId") String userId);

    /**
     * 通过用户id查询用户
     *
     * @param userId
     * @return
     */
    Users getUserById(@Param("userId") String userId);


    /**
     * 根据Id查询关注的博主
     *
     * @param idList
     * @return
     */
    List<Users> getFriendsByFriendIdList(List<String> idList);

    /**
     * 评论时候用，通过用户Id获得用户简要的信息
     *
     * @param userId
     * @return
     */
    UserToken getUserTokenById(@Param("userId") String userId);

    /**
     * 获取用户文章下待审核的评论数量（每次刷新都要获取）
     *
     * @param userId
     * @return
     */
    Integer getUserArticleCommentsWithNotPass(@Param("userId") String userId);

}
